//package org.game.controller;
//
//import com.google.common.collect.Lists;
//import com.sojoys.artifact.constant.ServerStatusEnum;
//import com.sojoys.artifact.core.IServer;
//import com.sojoys.artifact.third.web.core.NettyHttpContext;
//import com.xiaoleilu.hutool.log.Log;
//import com.xiaoleilu.hutool.log.LogFactory;
//import org.base.BaseGoods;
//import org.cache.GoodsCfgCache;
//import org.constant.ItemType;
//import org.game.db.bean.*;
//import org.game.db.cache.BuildingCache;
//import org.game.db.dao.PlayerDaoImpl;
//import org.game.db.vo.EquipmentVO;
//import org.game.manager.HeroManager;
//import org.game.manager.MailManager;
//
//import java.util.List;
//import java.util.concurrent.atomic.AtomicBoolean;
//
///**
// * 停止服务器
// *
// * @author win7
// */
//
//public class ServerFix {
//
//    static final Log log = LogFactory.get(ServerFix.class);
//
//    /**未修复*/
//    public static final int NOT_FIX = 0;
//    /**已经修复*/
//    public static final int FIXED = 1;
//
//
//    public static Integer state =NOT_FIX;
//
//    /**
//     * 修复
//     */
//    public void fix(NettyHttpContext ctx) {
//        synchronized (state){
//            if (state  == FIXED){
//                ctx.send("already fixed");
//                return;
//            }
//            state = FIXED;
//        }
//        long time = System.currentTimeMillis();
//        System.out.println("++++++开始修复");
//        //// TODO: 2018-1-24 修复方法写在此处↓↓↓↓↓↓↓
//
//        //// TODO: 2018-1-24 修复方法写在此处↑↑↑↑↑↑↑
//        System.out.println("+++++结束修复，耗时" + (System.currentTimeMillis() - time) / 1000);
//        ctx.send("Succeed");
//    }
//
//    /**
//     * 修复多个相同cid 的 hero数据
//     * 1.筛选相同cid的hero
//     * 2.保留最大的hero，把其他的删除
//     * 3.清除相关的建筑的打工状态
//     * 4.卸下装备
//     * 5.所有hero下阵，扔十香上阵
//     */
//    private void fixRestHeros() {
//
//        List<Player> playerList = PlayerDaoImpl.me().getAll();
//        AtomicBoolean stateErr = new AtomicBoolean(false);
//        playerList.forEach(player -> {
//            List<Hero> heroList = player.getHerosFkPlayerId();
//            List<Formation> formationList = player.getFormationsFkPlayerId();
//            Formation formation = formationList.get(0);
//            //十香
//            Hero shixiang = null;
//            for (Hero hero : heroList) {
//                if (hero.getCid() == 110101) {
//                    shixiang = hero;
//                }
//                List<Hero> sameHeroList = Lists.newArrayList();
//                List<Hero> heroList1 = player.getHerosFkPlayerId();
//                for (Hero hero1 : heroList1) {
//                    if (hero1.getCid() == hero.getCid()) {
//                        sameHeroList.add(hero1);
//                    }
//                }
//                if (sameHeroList.size() > 1) {
//                    //若多余一个，则数据异常，需要修复
//                    stateErr.set(true);
//                    Hero max = null;
//                    //找出战力最高的hero
//                    for (Hero hero1 : sameHeroList) {
//                        HeroManager.me().calAttr(hero1);
//                        if (max == null) {
//                            max = hero1;
//                        } else {
//                            if (max.getHeroProxy().getFightPower() < hero1.getHeroProxy().getFightPower()) {
//                                max = hero1;
//                            }
//                        }
//                    }
//                    //除了战力最高的hero，其他的全删除（应该分解对对应碎片给顽疾挨打，没做。。。）
//                    for (Hero hero1 : sameHeroList) {
//                        if (hero1 == max) {
//                            continue;
//                        } else {
//                            if (hero1.getWorkBuildingId() != 0) {
//                                Building building = BuildingCache.me().getByPlayerIdCid(player.getId(), hero1.getWorkBuildingId());
//                                if (building != null) {
//                                    building.getBuildingProxy().clear();
//                                }
//                            }
//                            List<Item> itemList = player.getItemsFkPlayerId();
//                            for (Item item : itemList) {
//                                BaseGoods baseGoods = GoodsCfgCache.me().get(item.getCid());
//                                if (baseGoods.getSuperType() == ItemType.EQUIP) {
//                                    EquipmentVO evo = (EquipmentVO) item;
//                                    if (evo.getHeroId() == hero1.getId()) {
//                                        evo.takeOff();
//                                        evo.update();
//                                    }
//                                }
//                            }
//                            hero1.delete();
//                        }
//                    }
//                }
//            }
//            if (stateErr.get()) {
//                player.getPlayerProxy().setHelpHero(shixiang);
//                formation.getStance().clear();
//                formation.getStance().add(shixiang.getId());
//                formation.update();
//            }
//        });
//    }
//}